package segmentTree;

/**
 * @program: play-structure
 * @author: baichen
 * 力扣303：给定一个整数数组  nums，求出数组从索引 i 到 j  (i ≤ j) 范围内元素的总和，包含 i,  j 两点。
 **/
public class SumRange2 {
    // sum[i]存储前i个元素之和, 比如：sum[0] = 0，sum[1]表示前一个元素的和，sum[2]表示前两个元素之和
    // 即sum[i]存储nums[0...i-1]的和
    // sum(i, j) = sum[j + 1] - sum[i]
    private int[] sum;

    public SumRange2(int[] nums) {
        sum = new int[nums.length + 1];     //多了个0，所以这里要加1
        sum[0] = 0;
        for (int i = 1; i < sum.length; i++) {
            sum[i] = sum[i - 1] + nums[i - 1];
        }
    }

    public int sumRange(int i, int j) {
        return sum[j + 1] - sum[i];
    }
}
